package alittlepond.config;

import java.util.Collection;
import java.util.Map;

/**
 * A thing that has some properties that can be managed through some user interface.
 * 
 * TODO: registering of changehandlers, to push changes in the reverse direction.
 * TODO: Various configuration options; some a bit gui-ish. Decimal precision; update strategy (update on change, on save on lose focus, etc) 
 * TODO: Assigning of keys & such maybe?
 * 
 * @author hopey
 *
 * @param <T>
 */

public interface HasProperties<T extends Property> {
	T[] getPropertyDefinitions();
	Map<T, Object> getProperties();
	void setProperty(T property, Object value);
	Object getProperty(T property);
}
